Without setting "detail-width-chars" and "detail-height-rows"
authorMathias Hasselmann <hasselmm@src.gnome.org>
Fri, 28 Dec 2007 09:26:38 +0000 (09:26 +0000)
committerMathias Hasselmann <hasselmm@src.gnome.org>
Fri, 28 Dec 2007 09:26:38 +0000 (09:26 +0000)
properties not only the widget has to be redrawn on certain
conditions, but also its size must be recalculated. (#339540)

* gtk/gtkcalendar.c: Add calendar_queue_refresh and call
that function instead of gtk_widget_queue_draw.

svn path=/trunk/; revision=19262

ChangeLog
gtk/gtkcalendar.c

index feb0dddc3350d7b79d3b9d50dde78848829bb846..18a596e7ee32b07a610faa5d9d12e77d5f249ad1 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2007-12-28  Mathias Hasselmann  <mathias@openismus.com>
+
+       Without setting "detail-width-chars" and "detail-height-rows"
+       properties not only the widget has to be redrawn on certain
+       conditions, but also its size must be recalculated. (#339540)
+
+       * gtk/gtkcalendar.c: Add calendar_queue_refresh and call
+       that function instead of gtk_widget_queue_draw.
+
 2007-12-28  Mathias Hasselmann  <mathias@openismus.com>
 
        Consider details for size-request and expose-event. (#339540)
index a1ee71219f8d6807015d9414d25bb68fb5e4f104..63cfc8c19197e5de44cfedd1fac51220d79929de 100644 (file)
@@ -772,6 +772,19 @@ gtk_calendar_init (GtkCalendar *calendar)
  *          Utility Functions           *
  ****************************************/
 
+static void
+calendar_queue_refresh (GtkCalendar *calendar)
+{
+  GtkCalendarPrivate *priv = GTK_CALENDAR_GET_PRIVATE (calendar);
+
+  if (!priv->detail_func ||
+       priv->detail_width_chars ||
+       priv->detail_height_rows)
+    gtk_widget_queue_draw (GTK_WIDGET (calendar));
+  else
+    gtk_widget_queue_resize (GTK_WIDGET (calendar));
+}
+
 static void
 calendar_set_month_next (GtkCalendar *calendar)
 {
@@ -809,7 +822,7 @@ calendar_set_month_next (GtkCalendar *calendar)
   else
     gtk_calendar_select_day (calendar, calendar->selected_day);
 
-  gtk_widget_queue_draw (GTK_WIDGET (calendar));
+  calendar_queue_refresh (calendar);
 }
 
 static void
@@ -838,7 +851,7 @@ calendar_set_year_prev (GtkCalendar *calendar)
   else
     gtk_calendar_select_day (calendar, calendar->selected_day);
   
-  gtk_widget_queue_draw (GTK_WIDGET (calendar));
+  calendar_queue_refresh (calendar);
 }
 
 static void
@@ -867,7 +880,7 @@ calendar_set_year_next (GtkCalendar *calendar)
   else
     gtk_calendar_select_day (calendar, calendar->selected_day);
   
-  gtk_widget_queue_draw (GTK_WIDGET (calendar));
+  calendar_queue_refresh (calendar);
 }
 
 static void
@@ -1175,7 +1188,7 @@ calendar_set_month_prev (GtkCalendar *calendar)
       gtk_calendar_select_day (calendar, calendar->selected_day);
     }
 
-  gtk_widget_queue_draw (GTK_WIDGET (calendar));
+  calendar_queue_refresh (calendar);
 }
 
 \f
@@ -3172,10 +3185,10 @@ gtk_calendar_focus_out (GtkWidget     *widget,
                        GdkEventFocus *event)
 {
   GtkCalendarPrivate *priv = GTK_CALENDAR_GET_PRIVATE (widget);
+  GtkCalendar *calendar = GTK_CALENDAR (widget);
 
-  gtk_widget_queue_draw (widget);
-
-  calendar_stop_spinning (GTK_CALENDAR (widget));
+  calendar_queue_refresh (calendar);
+  calendar_stop_spinning (calendar);
   
   priv->in_drag = 0; 
 
@@ -3573,8 +3586,7 @@ gtk_calendar_select_month (GtkCalendar *calendar,
   calendar->year  = year;
   
   calendar_compute_days (calendar);
-  
-  gtk_widget_queue_draw (GTK_WIDGET (calendar));
+  calendar_queue_refresh (calendar);
 
   g_object_freeze_notify (G_OBJECT (calendar));
   g_object_notify (G_OBJECT (calendar), "month");
@@ -3648,8 +3660,7 @@ gtk_calendar_clear_marks (GtkCalendar *calendar)
     }
 
   calendar->num_marked_dates = 0;
-
-  gtk_widget_queue_draw (GTK_WIDGET (calendar));
+  calendar_queue_refresh (calendar);
 }
 
 /**